package com.jxy.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import com.jxy.service.ConsumerService;

@RestController
public class ConsumerTestController {
	// --------- 负载均衡----------
	// 1. pom 文件中引入对应的依赖,本项目中引入的是ribbon
	// 2.RestTemplate 上添加@LoadBalanced 注解
	// --------- 负载均衡----------
	// ----------断路器-----------
	// 1.pom 文件中引入断路器的依赖,spring-cloud-starter-hystrix
	// 2.在项目主类(启动整个项目的类)上使用@EnableCircuitBreaker注解开启断路器功能：
	// 3.在需要使用断路器的方法上,使用@HystrixCommand(fallbackMethod = "addServiceFallback")
	// 并添加fallbackMethod回调方法
	// ----------断路器-----------
	@Autowired
	private RestTemplate restTemplate;
	@Autowired
	private ConsumerService consumerService;

	@RequestMapping(value = "/add")
	public Integer add() {
		System.out.println("--------------consumer 执行---------------");
		Integer sum = restTemplate.getForEntity(
				"http://CONFIG-CLIENT/add?a=10&b=20", Integer.class).getBody();
		return sum;
	}

	@RequestMapping(value = "/addForHystrix")
	public String addForHystrix() {
		return consumerService.add();
	}
}
